import jieba

stopwords = {"我", "想", "去", "看", "的", "了", "在"}  # 停用词表


def preprocess(sentence):
    # 第一步：去除所有空格（关键！处理带空格的输入）
    sentence_clean = sentence.replace(' ', '')  # 去掉所有空格
    # 第二步：分词
    words = jieba.lcut(sentence_clean)
    # 第三步：去停用词
    filtered = [word for word in words if word not in stopwords]
    return set(filtered)  # 转集合，方便计算交集/并集


def calculate_similarity(input_sentence, target_words):
    input_words = preprocess(input_sentence)
    intersection = input_words & target_words  # 共同的词
    union = input_words | target_words        # 所有的词
    return len(intersection) / len(union) if len(union) > 0 else 0




if __name__ == '__main__':
    target_sentence = "音乐电影中心"
    target_words = preprocess(target_sentence)

    test_inputs = [
        "我想去音乐电影中心",          # 无空格
        "我想去 音乐电影中心",         # 中间带空格
        "我想 看 电影",                # 词语间带空格
        "音 乐 电 影 中 心",           # 每个字都带空格
        "咖啡厅 音乐 电影",             # 部分重叠带空格
        "我想 喝 咖啡",                # 词语间带空格
    ]

    for input_sent in test_inputs:
        sim = calculate_similarity(input_sent, target_words)
        print(f"输入: {input_sent} → 匹配度: {sim:.2f} → {'匹配' if sim >= 0.33 else '不匹配'}")
